关于(*p)[int]的疑问?

来源:百度知道 编辑:UC知道 时间:2024/07/07 12:42:20
int a[2][3]={1,2,3,4,5,6};
int (*p)[3]=a;
for(int i(0);i<2;i++)
{
for(int j(0);j<3;j++)
{
cout<<p[i][j]<<endl;
}
}
}我想知道int (*p)[3]=a;中的int (*p)[3]是什么意思?

int (*p)[3]是数组的指针 指向int a[N][3]的数组

此题目中的(*p)[3]就是指向二维数组
之所以在*p两边加上括号是因为 '[]'的优先级高于'*'

如若不加括号
int *p[3];代表的是指针的数组

int (*p)[3]代表数组的指针

p是指向数组类型的指针,其指向的数组类型为int[3]

指针数组吧

首先从P 处开始,先与*结合,说明P 是一个指针然后再与[]结合(与"()"这步可以忽略,只是为了改变优先级),说明指针所指向的内容是一个数组,然后再与int 结合,说明数组里的元素是整型的.所以P 是一个指向由整型数据组成的数
组的指针

数组a[0]的指针。
二维数组的符号a代表的是一维数组a[0](a[0][0]~a[0][2])地址,所以p就是指向一维数组a[0]的指针,所以要加上"[3]"。
括号是显然要加的,因为*优先级高于[],所以如果不加括号代表的就是指向整形变量指针 的数组。